/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cajeroautomatico;

/**
 *
 * @author Jose Gabriel Rivera
 */
public class ServicioBancario {
    private Usuario [] usuarioBD;
    
    public ServicioBancario (){
        usuarioBD = new Usuario[5];
        usuarioBD[0] = new Usuario();
        usuarioBD[0].setClave((short)1234);
        usuarioBD[0].setNroCuenta("1234");
        usuarioBD[0].setSaldo((double)10000);
    }
    
    @SuppressWarnings("empty-statement")
    public int buscarUsuario (Usuario usuario){
        int i;
        for(i=0;usuarioBD[i]!=null && i<usuarioBD.length && !usuarioBD[i].getNroCuenta().equals(usuario.getNroCuenta());i++);
        if(usuarioBD[i]!=null){
            return i;
        }else{
            return Integer.MAX_VALUE;
        }
    }
    
    public boolean verificarDatos(Usuario usuario){
        int i = buscarUsuario(usuario);
        if(i!=Integer.MAX_VALUE && usuarioBD[i].getClave()==usuario.getClave()){
            return true;
        }
        return false;
    }
    
    public boolean operar (Cajero cajero){
        int i = buscarUsuario(cajero.usuario);
        switch(cajero.getOperacion()){
            case '1': //Cambio de clave
                usuarioBD[i].setClave(cajero.usuario.getClaveAuxiliar());
                cajero.usuario.setClave(cajero.usuario.getClaveAuxiliar());
                break;
            case '2': //Retiro
                usuarioBD[i].setSaldo(usuarioBD[i].getSaldo()-cajero.usuario.getMonto());
                cajero.usuario.setSaldo(usuarioBD[i].getSaldo());
                if(!cajero.retiro(cajero.usuario.getMonto())){
                    return false;
                }
                break;
            case '3': //Deposito
                usuarioBD[i].setSaldo(usuarioBD[i].getSaldo()+cajero.usuario.getMonto());
                cajero.usuario.setSaldo(usuarioBD[i].getSaldo());
                cajero.deposito(cajero.usuario.getMonto());
                break;
            case '4': //Consulta saldo
                cajero.usuario.setSaldo(usuarioBD[i].getSaldo());
                break;
            default:
                return false;
        }
        return true;
    }
}
